home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / CHIP Haziran 2001.iso / prog / haziran / 19 / setup.exe / data.z / p9060_lib.h < prev    next >
C/C++ Source or Header  |  2001-04-11  |  5KB  |  154 lines

  1. #ifndef _P9060_LIB_H_
  2. #define _P9060_LIB_H_
  3.  
  4. #include "../../../samples/shared/pci_regs.h"
  5. #include "../../../samples/shared/bits.h"
  6.  
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10.  
  11. // PLX register definitions 
  12. enum {
  13.     P9060_RANGE_PTOL_0     = 0x00,
  14.     P9060_REMAP_PTOL_0     = 0x04,
  15.     P9060_RANGE_PTOL_EPROM = 0x10,
  16.     P9060_REMAP_PTOL_EPROM = 0x14,
  17.     P9060_REGION_DESC      = 0x18,
  18.     P9060_MAILBOX_0        = 0x40,
  19.     P9060_MAILBOX_1        = 0x44,
  20.     P9060_MAILBOX_2        = 0x48,
  21.     P9060_MAILBOX_3        = 0x4c,
  22.     P9060_MAILBOX_4        = 0x50,
  23.     P9060_MAILBOX_5        = 0x54,
  24.     P9060_MAILBOX_6        = 0x58,
  25.     P9060_MAILBOX_7        = 0x5c,
  26.     P9060_DOORBELL_PTOL    = 0x60,
  27.     P9060_DOORBELL_LTOP    = 0x64,
  28.     P9060_INT_STATUS       = 0x68,
  29.     P9060_MISC_CONTROL     = 0x6c
  30. };
  31.  
  32. enum { P9060_MODE_DESC       = 0xF9000140 };
  33. enum { P9060_MODE_DESC_BYTE  = 0x00000000 };
  34. enum { P9060_MODE_DESC_WORD  = 0x00010001 };
  35. enum { P9060_MODE_DESC_DWORD = 0x00030003 };
  36.  
  37. typedef enum
  38. {
  39.     P9060_MODE_BYTE   = 0,
  40.     P9060_MODE_WORD   = 1,
  41.     P9060_MODE_DWORD  = 2
  42. } P9060_MODE;
  43.  
  44. typedef enum
  45. {
  46.     P9060_ADDR_REG     = AD_PCI_BAR0,
  47.     P9060_ADDR_REG_IO  = AD_PCI_BAR1,
  48.     P9060_ADDR_SPACE0  = AD_PCI_BAR2,
  49.     P9060_ADDR_SPACE1  = AD_PCI_BAR3,
  50.     P9060_ADDR_SPACE2  = AD_PCI_BAR4,
  51.     P9060_ADDR_SPACE3  = AD_PCI_BAR5,
  52.     P9060_ADDR_EPROM   = AD_PCI_BAR_EPROM
  53. } P9060_ADDR;
  54.  
  55.  
  56. enum { P9060_RANGE_REG = 0x00000080 };
  57.  
  58. typedef struct P9060_STRUCT *P9060_HANDLE;
  59. typedef P9060_HANDLE P9060HANDLE;
  60.  
  61. typedef struct
  62. {
  63.     DWORD dwCounter;   // number of interrupts received
  64.     DWORD dwLost;      // number of interrupts not yet dealt with
  65.     BOOL fStopped;     // was interrupt disabled during wait
  66.     DWORD dwStatusReg; // value of status register when interrupt occured
  67. } P9060_INT_RESULT;
  68. typedef void (WINAPI *P9060_INT_HANDLER)( P9060_HANDLE hPlx, P9060_INT_RESULT *intResult);
  69.  
  70. typedef struct
  71. {
  72.     WD_INTERRUPT Int;
  73.     HANDLE hThread;
  74.     WD_TRANSFER Trans[2];
  75.     P9060_INT_HANDLER funcIntHandler;
  76. } P9060_INTERRUPT;
  77.  
  78. typedef struct 
  79. {
  80.     DWORD dwLocalBase;
  81.     DWORD dwMask;
  82.     DWORD dwBytes;
  83.     DWORD dwAddr;
  84.     DWORD dwAddrDirect;
  85.     BOOL  fIsMemory;
  86. } P9060_ADDR_DESC;
  87.  
  88. typedef struct P9060_STRUCT
  89. {
  90.     HANDLE hWD;
  91.     WD_CARD cardLock;
  92.     WD_PCI_SLOT pciSlot;
  93.     WD_CARD_REGISTER cardReg;
  94.     P9060_ADDR_DESC addrDesc[AD_PCI_BARS];
  95.     DWORD  addrSpace;
  96.     BOOL   fUseInt;
  97.     P9060_INTERRUPT Int;
  98.     DWORD  modeDesc[3];
  99. } P9060_STRUCT;
  100.  
  101. // options for PLX_Open
  102. enum { P9060_OPEN_USE_INT =   0x1 };
  103. enum { P9060_OPEN_USE_DMA =   0x2 }; // not yet implemented
  104.  
  105. DWORD P9060_CountCards (DWORD dwVendorID, DWORD dwDeviceID);
  106. BOOL P9060_Open (P9060_HANDLE *phPlx, DWORD dwVendorID, DWORD dwDeviceID, DWORD nCardNum, DWORD dwOptions);
  107. void P9060_Close (P9060_HANDLE hPlx);
  108.  
  109. BOOL P9060_IsAddrSpaceActive(P9060_HANDLE hPlx, P9060_ADDR addrSpace);
  110.  
  111. void P9060_ReadWriteBlock (P9060_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, 
  112.                     DWORD dwBytes, BOOL fIsRead, P9060_MODE mode);
  113. void P9060_ReadBlock (P9060_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, DWORD dwBytes, P9060_MODE mode);
  114. void P9060_WriteBlock (P9060_HANDLE hPlx, DWORD dwLocalAddr, PVOID buf, DWORD dwBytes, P9060_MODE mode);
  115. BYTE P9060_ReadByte (P9060_HANDLE hPlx, DWORD dwLocalAddr);
  116. void P9060_WriteByte (P9060_HANDLE hPlx, DWORD dwLocalAddr, BYTE data);
  117. WORD P9060_ReadWord (P9060_HANDLE hPlx, DWORD dwLocalAddr);
  118. void P9060_WriteWord (P9060_HANDLE hPlx, DWORD dwLocalAddr, WORD data);
  119. DWORD P9060_ReadDWord (P9060_HANDLE hPlx, DWORD dwLocalAddr);
  120. void P9060_WriteDWord (P9060_HANDLE hPlx, DWORD dwLocalAddr, DWORD data);
  121.  
  122. BYTE P9060_ReadSpaceByte (P9060_HANDLE hPlx, P9060_ADDR addrSpace, DWORD dwOffset);
  123. void P9060_WriteSpaceByte (P9060_HANDLE hPlx, P9060_ADDR addrSpace, DWORD dwOffset, BYTE data);
  124. WORD P9060_ReadSpaceWord (P9060_HANDLE hPlx, P9060_ADDR addrSpace, DWORD dwOffset);
  125. void P9060_WriteSpaceWord (P9060_HANDLE hPlx, P9060_ADDR addrSpace, DWORD dwOffset, WORD data);
  126. DWORD P9060_ReadSpaceDWord (P9060_HANDLE hPlx, P9060_ADDR addrSpace, DWORD dwOffset);
  127. void P9060_WriteSpaceDWord (P9060_HANDLE hPlx, P9060_ADDR addrSpace, DWORD dwOffset, DWORD data);
  128. void P9060_ReadSpaceBlock (P9060_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
  129.                     DWORD dwBytes, P9060_ADDR addrSpace, P9060_MODE mode);
  130. void P9060_WriteSpaceBlock (P9060_HANDLE hPlx, DWORD dwOffset, PVOID buf, 
  131.                      DWORD dwBytes, P9060_ADDR addrSpace, P9060_MODE mode);
  132.  
  133. // interrupt functions
  134. BOOL P9060_IntIsEnabled (P9060_HANDLE hPlx);
  135. BOOL P9060_IntEnable (P9060_HANDLE hPlx, P9060_INT_HANDLER funcIntHandler);
  136. void P9060_IntDisable (P9060_HANDLE hPlx);
  137.  
  138. // access registers
  139. DWORD P9060_ReadReg (P9060_HANDLE hPlx, DWORD dwReg);
  140. void P9060_WriteReg (P9060_HANDLE hPlx, DWORD dwReg, DWORD dwData);
  141.  
  142. // access PCI configuration registers
  143. DWORD P9060_ReadPCIReg(P9060_HANDLE hPlx, DWORD dwReg);
  144. void P9060_WritePCIReg(P9060_HANDLE hPlx, DWORD dwReg, DWORD dwData);
  145.  
  146. // this string is set to an error message, if one occurs
  147. extern CHAR P9060_ErrorString[];
  148.  
  149. #ifdef __cplusplus
  150. }
  151. #endif
  152.  
  153. #endif
  154.